//
//  main.m
//  08-homework
//
//  Created by dllo on 16/7/13.
//  Copyright © 2016年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"
#import "Animal.h"
#import "Car.h"
#import "NSMutableArray+ArrConvert.h"
int main(int argc, const char * argv[]) {
    // iOS9新特性三块的深入理解, 创建几个类, 熟悉写法(提交练习成果)
    // 新特性一:nullability(nonnull, nullable, null_resettable)
    // 在属性中使用null_resettable 要重写相关的setter方法;
    Person *per = [[Person alloc] init];
    //不能为空
    per.name = @"yinjiaen";
    // 可以为空
    per.sex = nil;
    per.sex = @"male";
    // 赋值时可以为空
    per.phoneNumber = nil;
    [per phoneNumber];
    per.girlFriends = nil;
    [per girlFriends];
    Animal *ani = [[Animal alloc] init];
    ani.name = nil;
    ani.sex = nil;
    ani.girlFriends = nil;
    // 需要重写setter方法
    [ani girlFriends];
    // 不能为空
    ani.age = nil;
    ani.age = @"2";
    // 不能为空
    ani.color = nil;
    ani.color = @"gray";
    // 新特性二:
    //数组带泛型
    NSMutableArray<NSString *> *array = [[NSMutableArray alloc] initWithObjects:@"sdf", @"errwe", nil];
    // 只能添加字符串
    [array addObject:ani];
    [array addObject:@"wet"];
    // 字典带泛型
    NSMutableDictionary<NSString *, NSString *> *dic = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"nf", @"name", nil];
    // value值只能添加字符串
    [dic setObject:@"sdfg" forKey:@"name"];
    NSInteger number = [dic objectForKey:@"name"].length;
    // 不能用.方法
    NSMutableDictionary *dic1 = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"nf", @"name", nil];
    NSInteger number2 = [[dic1 objectForKey:@"name"] length];
    // 自定义泛型
    Car<Person *> *car = [[Car alloc] init];
    [car addPerson:per];
    Person *per1 = [car firstObject];
    NSLog(@"%@", per1);
    // 只能添加Person类的对象
    [car addPerson:ani];
    
    NSArray *arr3 = [car retureArray];
    // 由于使用__kindof方法使得可以用NSMutableArray进行接收
    NSMutableArray *arr4 = [car retureArray];
    // iOS 类扩展方式的复习 1> 给NSMutableArray添加convert方法，实现数组倒序。
    NSMutableArray *arr = [NSMutableArray arrayWithObjects:@20, @21, @22, @23, @24, nil];
    NSMutableArray * marr = [arr convertArr];
    NSLog(@"%@", marr);
    
    // 预习UI内容
    
    
    
    return 0;
}
